surface: Only keep state 'withdrawn' after hiding
authorJonas Ådahl <jadahl@gmail.com>
Mon, 23 Nov 2020 16:23:44 +0000 (17:23 +0100)
committerJonas Ådahl <jadahl@gmail.com>
Mon, 7 Dec 2020 08:46:39 +0000 (09:46 +0100)
A hidden surface should start from a clean slate when showing again, so
clear any now out of date state.

gdk/gdksurface.c

index a64cbb0f9449cd8ea043977ccea2dbad128a9de9..25e6f12b274c240da23afcc7874dd52071ece24e 100644 (file)
@@ -1671,7 +1671,9 @@ gdk_surface_hide (GdkSurface *surface)
 
   if (GDK_SURFACE_IS_MAPPED (surface))
     {
-      gdk_synthesize_surface_state (surface, 0, GDK_TOPLEVEL_STATE_WITHDRAWN);
+      gdk_synthesize_surface_state (surface,
+                                    surface->state & ~GDK_TOPLEVEL_STATE_WITHDRAWN,
+                                    GDK_TOPLEVEL_STATE_WITHDRAWN);
       surface->pending_unset_flags = 0;
       surface->pending_set_flags = 0;
     }